"""
题目：将两个升序排列的列表合并为一个新的升序列表。
"""


def merge_sorted_lists(lst1, lst2):
    # 初始化两个指针和结果列表
    i = j = 0
    result = []
    # 当两个列表都还有元素时 注意是and条件 有任何一个不满足 所以这个集合已经用完了 后面就直接将剩下的那个集合一次性添加进结果集合就行
    while i < len(lst1) and j < len(lst2):
        # 比较当前指针位置的元素，将较小的添加到结果
        if lst1[i] < lst2[j]:
            result.append(lst1[i])
            i += 1
        else:
            result.append(lst2[j])
            j += 1
    # 添加剩余元素 当然 也可以做判断，再精细化对剩余的那个list进行extend操作 list的extend方法不会去重
    result.extend(lst1[i:])
    result.extend(lst2[j:])

    return result


# 测试
print(merge_sorted_lists([1, 3, 5], [2, 4, 6]))  # 输出: [1, 2, 3, 4, 5, 6]

print("下面是其他基本语法测试")
list1 = [1,2,3,4,5]
print(list1[5::1])  #可见,切片时，即使start>=len(list),也不会报错

list1.extend([4,5,6,7,8])  ##list的extend不会去重
print(list1)



#需要注意的是，空集合不能用 {} 定义（这会被解析为字典），而应使用 set() 来创建空集合。
set3 = {}  #<class 'dict'>
set4 = set()
print(type(set3) ," ",type(set4))  #<class 'set'>

#在 Python 中，set（集合）类型没有 extend() 方法。集合的常用方法中，与 extend() 功能类似的是 update() 方法，它可以接收一个可迭代对象（如列表、元组、其他集合等），并将其中的所有元素添加到当前集合中（自动去重）。
# s = {1, 2, 3}
# s.update([3, 4, 5])  # 添加列表中的元素
# print(s)  # 输出：{1, 2, 3, 4, 5}
#
# s.update((5, 6), {7, 8})  # 可同时添加多个可迭代对象
# print(s)  # 输出：{1, 2, 3, 4, 5, 6, 7, 8}